#!/bin/bash

# =============================================================================
# Fedora Workstation 42 娱乐/办公/工具软件一键安装脚本
# 功能：安装浏览器、办公软件、影音播放器、输入法、压缩工具、PDF 阅读器等
# 使用方法：chmod +x fedora-apps-setup.sh && ./fedora-apps-setup.sh
# 注意：建议在系统基础配置（如 DNF 镜像、Flatpak 源）完成后运行
# =============================================================================

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # 无颜色

# 打印信息函数
print_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查是否以普通用户运行
check_user() {
    if [ "$EUID" -eq 0 ]; then
        print_error "请不要以 root 用户运行此脚本！"
        print_info "脚本会通过 sudo 自动提权执行需要的操作。"
        exit 1
    fi
}

# 安装常用浏览器
install_browsers() {
    print_info "正在安装常用浏览器..."
    sudo dnf upgrade --refresh -y
    
    # https://linrunner.de/tlp/installation/fedora.html
    sudo dnf remove -y tuned tuned-ppd
    sudo dnf install -y tlp tlp-rdw
    sudo systemctl enable tlp.service
    sudo systemctl start tlp.service
    # systemctl status tlp.service
    # sudo tlp-stat -b
    flatpak install flathub com.github.d4nj1.tlpui -y
    
    cd ~/下载
    flatpak install flathub com.google.Chrome -y
    flatpak install flathub com.microsoft.Edge -y
    # 数据库管理工具，真正开源免费（社区版完全免费，无功能阉割）。支持几乎所有主流数据库
    flatpak install flathub io.dbeaver.DBeaverCommunity -y

    # Mozilla Firefox（系统默认已安装，确保为最新）
    sudo dnf upgrade -y firefox
    # 从 fedora-cisco-openh264 存储库安装
    sudo dnf install -y gstreamer1-plugin-openh264 mozilla-openh264 mozilla-ublock-origin
    
    curl -L -o Linuxqq.rpm https://dldir1v6.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.21_251105_x86_64_01.rpm
    sudo dnf install -y ./Linuxqq.rpm
    curl -L -o WeChatLinux.rpm https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.rpm
    sudo dnf install -y ./WeChatLinux.rpm
    
    curl -L -o winboat.rpm https://gh-proxy.com/https://github.com/TibixDev/winboat/releases/download/v0.8.7/winboat-0.8.7-x86_64.rpm
    sudo dnf install -y ./winboat.rpm
    
    # 为 Linux 上的 Flathub 提供支持的 Flatpak 应用商店
    flatpak install flathub io.github.kolunmi.Bazaar -y
    # 注释屏幕截图
    flatpak install flathub be.alexandervanhee.gradia -y
    # 无暇（又名：G4Music）是一款用 GTK4 编写的轻量级音乐播放器，专注于大型音乐收藏。
    flatpak install flathub com.github.neithern.g4music
    # 忘记忘记事情
    flatpak install flathub io.github.alainm23.planify -y
    # Bookup 是一个用户友好的笔记应用程序，它通过使用 markdown 语法简化了流程。
    flatpak install flathub org.gnome.gitlab.ilhooq.Bookup -y
    # 每天享受全新壁纸，并用作您的每日壁纸。
    flatpak install flathub de.swsnr.pictureoftheday -y
    
    # sudo dnf install -y clash-meta
    # clash-verge-rev 免费节点	https://clashvergerev.cc/free-node/
    # 下载 VPN 软件
    curl -L -o Clash.Verge.rpm 'https://gh-proxy.com/https://github.com/clash-verge-rev/clash-verge-rev/releases/download/v2.4.2/Clash.Verge-2.4.2-1.x86_64.rpm'
    sudo dnf install -y ./Clash.Verge.rpm
    rm -rf Clash.Verge.rpm

    print_success "浏览器（Chrome + Firefox）安装完成！"
}

# 安装办公软件
install_office_apps() {
    print_info "正在安装办公软件..."
    sudo dnf remove -y libreoffice*

    # OnlyOffice（通过 Flatpak 安装，界面更接近 MS Office）
    if ! flatpak list | grep -q onlyoffice; then
        flatpak install flathub org.onlyoffice.desktopeditors -y
    fi

    # 多功能截图软件
    sudo dnf install -y flameshot
    print_success "办公软件（LibreOffice + OnlyOffice）配置完成！"
}

# 安装影音娱乐软件
install_media_apps() {
    print_info "正在安装影音娱乐软件..."

    # 安装多媒体编解码器
    echo "安装多媒体编解码器..."
    # 作为 Fedora 用户和系统管理员，您可以使用这些步骤来安装额外的多媒体插件，使您能够播放各种视频和音频类型。 
    # 对于 fedora 41 及更高版本，安装用于播放电影和音乐的插件 https://docs.fedoraproject.org/zh_Hans/quick-docs/installing-plugins-for-playing-movies-and-music/
    # dnf group list multimedia			# 查看可用的软件包组
    # dnf group info multimedia			# 查看软件包组的信息
    sudo dnf group install -y multimedia
    sudo dnf install -y mozilla-openh264 mozilla-ublock-origin

    # VLC 播放器（全能媒体播放器）
    sudo dnf install -y vlc

    # Spotify（音乐流媒体）
    flatpak install flathub com.spotify.Client -y

    # 网易云音乐（国内用户常用，通过 Flatpak）
    flatpak install flathub com.github.gmg137.netease-cloud-music-gtk -y

    print_success "影音娱乐软件（VLC + Spotify + 网易云音乐）安装完成！"
}

# 安装 Flatpak 常用软件
install_flatpak_apps() {
    print_info "正在安装 Flatpak 常用软件..."
    
    flatpak install flathub com.microsoft.Edge -y
    flatpak install flathub io.typora.Typora -y
    flatpak install flathub md.obsidian.Obsidian -y
    flatpak install flathub com.github.marhkb.Pods -y
    flatpak install flathub com.github.tchx84.Flatseal -y
    flatpak install flathub de.haeckerfelix.Fragments -y
    flatpak install flathub io.github.alainm23.planify -y
    flatpak install flathub io.github.flattool.Warehouse -y
    flatpak install flathub io.github.realmazharhussain.GdmSettings -y
    flatpak install flathub io.gitlab.adhami3310.Impression -y
    flatpak install flathub net.nokyan.Resources -y
    flatpak install flathub org.gnome.Firmware -y
    flatpak install flathub com.apifox.Apifox -y

    print_success "Flatpak 常用软件安装完成！"
}

# 清理缓存
cleanup() {
    print_info "正在清理软件包缓存..."
    sudo dnf clean all
    flatpak uninstall --unused -y
    print_success "系统清理完成！"
}

# 主函数
main() {
    print_info "开始安装娱乐、办公与工具类软件..."

    check_user

    install_browsers
    install_office_apps
    install_media_apps
    install_flatpak_apps
    cleanup

    print_success "=========================================="
    print_success "🎉 常用软件安装完成！"
    print_success "已安装内容："
    print_success "  • 浏览器：Chrome、Firefox"
    print_success "  • 办公软件：LibreOffice、OnlyOffice、WPS"
    print_success "  • 娱乐：VLC、Spotify、网易云音乐"
    print_success "  • 输入法：Fcitx5 + 中文 Rime"
    print_success "  • 工具：PDF 阅读器、压缩软件、字体、截图等"
    print_success "=========================================="

    print_warning "📌 重要提示："
    print_warning "  • 请注销并重新登录，以启用输入法和部分 GUI 应用"
    print_warning "  • WPS 和 OnlyOffice 可在应用菜单中启动"
    print_warning "  • 首次使用 Flatpak 应用可能需要联网初始化"

    echo
    read -p "是否现在重启系统以应用所有更改？(y/N): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        sudo reboot
    else
        print_info "你可以稍后手动重启或注销。"
    fi
}

# 执行主流程
main "$@"
